home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 476-500 / disk_498 / cpalette / src / cpalette11.asm next >
Assembly Source File  |  1992-05-06  |  8KB  |  514 lines

  1. ; *** CPallete
  2.  
  3.   BRA _START
  4.  
  5. DOS EQU 1
  6. INT EQU 1
  7. GFX EQU 1
  8.  
  9. WIN EQU 1
  10. GAD EQU 1
  11. TXT EQU 1
  12.  
  13.   INCLUDE "HEADER"
  14.  
  15. MAIN
  16.   TST.L ENDFROMWB
  17.   BNE.S _BUILDGADGETS
  18. FROMUSER
  19.   DOSPRINT STDOUT,#OPENMESSAGE
  20.   ZERO D0
  21.   MOVEA.L COMMAND,A0
  22.   CMPI.B #'?',(A0)
  23.   BEQ USAGE
  24.  
  25. _BUILDGADGETS
  26. ;BORDER FOR COLOR GADGETS
  27.   LEA LINES,A1
  28.   LEA GADGETBORDER,A0
  29.   MOVE.L A1,BORD.XY(A0)
  30. ;ACTION GADGETS
  31.   LEA GADGETS,A5
  32.   MOVE.W _MYGADGACTIV1,_THISGACTIV
  33.   MOVE.W _MYGADGFLAGS1,_THISGFLAGS
  34.   LEA  NEXTG,A1
  35.   MOVE.W #15,D4
  36.   MOVE.W #75,D5
  37.   BSR MAKEAGADGET
  38.   MOVE.L _THISGADGET,(A5)+
  39.   LEA  CANCELG,A1
  40.   MOVE.W #230,D4
  41.   MOVE.W #75,D5
  42.   BSR MAKEAGADGET
  43.   MOVE.L _THISGADGET,(A5)+
  44. ;SLIDERS
  45.   MOVE.W _MYGADGACTIV2,_THISGACTIV
  46.   MOVE.W _MYGADGFLAGS2,_THISGFLAGS
  47.   MOVE.W #15,D4
  48.   MOVE.W #40,D5
  49.   MOVE.W #-20,D6
  50.   MOVE.W #9,D7
  51.   BSR MAKEAPROPGADGET
  52.   MOVE.L _THISGADGET,(A5)+
  53.   MOVE.W #15,D4
  54.   MOVE.W #50,D5
  55.   MOVE.W #-20,D6
  56.   MOVE.W #9,D7
  57.   BSR MAKEAPROPGADGET
  58.   MOVE.L _THISGADGET,(A5)+
  59.   MOVE.W #15,D4
  60.   MOVE.W #60,D5
  61.   MOVE.W #-20,D6
  62.   MOVE.W #9,D7
  63.   BSR MAKEAPROPGADGET
  64.   MOVE.L _THISGADGET,(A5)+
  65. ;COLORGADGETS
  66.   MOVE.W _MYGADGACTIV3,_THISGACTIV
  67.   MOVE.W _MYGADGFLAGS3,_THISGFLAGS
  68.   MOVE.W #31,D0         ;MAX COLORS -1
  69.   LEA CGADGETS,A5
  70. CG
  71.   PUSHREG D0
  72.   ZERA A1
  73.   BSR MAKEAGADGETC
  74.   MOVE.L _THISGADGET,(A5)+
  75.   PULLREG D0
  76.   DBRA D0,CG
  77.  
  78. ;BUILD ITEXT MODULES
  79.   MAKEITEX RED,ERROR,REDIT
  80.   MAKEITEX GREEN,ERROR,GREENIT
  81.   MAKEITEX BLUE,ERROR,BLUEIT
  82.  
  83.   MOVE.L _MYIDCMPFLAGS,_THISIDCMP
  84.   MOVE.L _MYFLAGS,_THISFLAGS
  85.   MOVE.W #CUSTOMSCREEN,_THISTYPE
  86. _BUILDAWINDOW
  87.   MOVE.L _INTBASE,A0
  88.   MOVE.L IB.FIRSTSCREEN(A0),A0
  89.   MOVE.L A0,_THISSCREEN
  90.   BSR CHECKDIM
  91.   MAKEWIN #MYWINDOWTITLE,LEFT,TOP,WIDTH,HEIGHT,ERROR
  92.   MOVE.L D0,A0
  93.   MOVE.L D0,WINDOW
  94.   MOVE.L WW.WSCREEN(A0),SCRN
  95.   MOVE.L WW.RPORT(A0),RP
  96.   INTLIB VIEWPORTADDRESS
  97.   MOVE.L D0,A0
  98.   MOVE.L A0,VP
  99.   MOVE.L VP.COLORMAP(A0),CM
  100.   MOVE.L SCRN,A0
  101.   ZERO D0
  102.   MOVE.B SCRN.BITMAP+BM.DEPTH(A0),D0
  103.   ZERO D1
  104.   MOVE.L VP,A0
  105.   MOVE.W VP.MODES(A0),D1
  106.   PUSHREG D1
  107.   AND.W #HAM,D1
  108.   CMP.W #HAM,D1
  109.   BNE.S 19$
  110.   MOVE.W #4,D0
  111. 19$:
  112.   PULLREG D1
  113.   AND.W #EXTRA_HALFBRITE,D1
  114.   CMP.W #EXTRA_HALFBRITE,D1
  115.   BNE.S 29$
  116.   MOVE.W #5,D0
  117. 29$:
  118.   MOVE.W #1,D1
  119.   ASL.W D0,D1
  120.   TST.W D1
  121.   BNE.S 100$
  122.   MOVE.W #1,D1
  123. 100$:
  124.   CMP.W #32,D1
  125.   BLT.S 200$
  126.   MOVE.W #32,D1
  127. 200$:
  128.   MOVE.W D1,NUMBEROFCOLORS
  129.  
  130. ; POP UP INTUITEXTS & COLOR GADGET BORDER
  131.   BSR REFRESHINTS
  132.  
  133. COLORGADGETS
  134. ; GET SCREEN INFO TO DETERMINE PALETTE SIZE
  135.   MOVE.W NUMBEROFCOLORS,D1
  136.   ZERO D6
  137.   MOVE.W #288,D6
  138.   DIVS D1,D6
  139.   MOVE.W #20,D7
  140.   MOVE.L #0,D0
  141.   MOVE.W #6,D4
  142.   MOVE.W #12,D5
  143.   LEA CGADGETS,A5
  144.   LEA COLORPALETTE,A4
  145.   SUBI.W #1,D1
  146. GADG2
  147.   PUSHREG D0-D1
  148.   MOVE.L (A5)+,A0
  149.   PUSHREG A0
  150.   BSR SIZEGADGET
  151.   PULLREG A0
  152.   BSR COLORIZEGADG
  153.   ADD.W D6,D4
  154.   MOVE.L CM,A0
  155.   GFXLIB GETRGB4
  156.   MOVE.W D0,(A4)+
  157.   PULLREG D0-D1
  158.   ADDI.B #1,D0
  159.   DBRA D1,GADG2
  160.  
  161.   MOVE.W #0,ACTIVECOLOR
  162.   BSR PROPADJUST
  163.  
  164. ; POP UP GADGETS
  165.   LEA GADGETS,A5
  166.   ZERO D7
  167.   MOVE.W NUMBEROFCOLORS,D7
  168.   ADDI.L #4,D7
  169. GADG1
  170.   ZERO D0
  171.   MOVE.W #-1,D0
  172.   MOVE.L WINDOW,A0
  173.   MOVE.L (A5)+,A1
  174.   INTLIB ADDGADGET
  175.   DBRA D7,GADG1
  176.  
  177.   BSR REFRESHING
  178.  
  179. LOOP
  180.   MOVE.L WINDOW,A0
  181.   MOVE.L WW.USERPORT(A0),A0
  182.   SYSLIB WAITPORT
  183.   MOVE.L WINDOW,A0
  184.   MOVE.L WW.USERPORT(A0),A0
  185.   SYSLIB GETMSG
  186.   TST.L D0
  187.   BEQ.S 9$
  188.   MOVE.L D0,A1
  189.   MOVE.L IM.CLASS(A1),D2
  190.   MOVE.W IM.CODE(A1),D3
  191.   MOVE.W IM.QUALIFIER(A1),D4
  192.   MOVE.L IM.IADDRESS(A1),D5
  193.   SYSLIB REPLYMSG
  194.   CMP.L #CLOSEWINDOW,D2
  195.   BEQ DONE
  196.   CMP.L #GADGETUP,D2
  197.   BEQ.S 10$
  198.   CMP.L #NEWSIZE,D2
  199.   BNE.S 8$
  200.   BSR REFRESHINTS
  201.   BRA RELOOP
  202. 8$:
  203.   CMP.L #MOUSEMOVE,D2
  204.   BNE.S 9$
  205.   BSR MMOVE
  206.   BRA RELOOP
  207. 9$:
  208. ; UNKNOWN MESSAGE - MAKE SURE SCREEN SURVIVED
  209.    MOVE.L _INTBASE,A0
  210.    MOVE.L IB.FIRSTSCREEN(A0),A0
  211. 12$:
  212.    CMP.L SCRN,A0
  213.    BEQ.S 11$
  214.    CMP.L #0,A0
  215.    BEQ.S 13$
  216.    MOVE.L (A0),A0
  217.    BRA 12$
  218. 13$:
  219.    BRA 101$
  220. 11$:
  221.   BRA.S RELOOP
  222. 10$:
  223.   BSR DOGADGET
  224.   TST.B D6   ; REQUIRES CHANGING SCREEN?
  225.   BEQ.S 2$
  226.    MOVE.L WINDOW,A0
  227.    INTLIB CLOSEWINDOW
  228.    MOVE.L _INTBASE,A0
  229.    MOVE.L IB.FIRSTSCREEN(A0),A0
  230.    INTLIB SCREENTOBACK
  231. 101$:
  232.    BRA _BUILDAWINDOW
  233. 2$:
  234. RELOOP
  235.   BRA LOOP
  236.  
  237. DONE
  238.   ZERO D0
  239. QUIT
  240.   PUSHREG D0
  241.   TST.L WINDOW
  242.   BEQ.S 1$
  243.   MOVE.L WINDOW,A0
  244.   INTLIB CLOSEWINDOW
  245. 1$:
  246.   PULLREG D0
  247. QUITNOW
  248.  RTS
  249.  
  250. USAGE
  251.   DOSPRINT STDOUT,#USAGETEXT
  252.  BRA DONE
  253.  
  254. ERROR
  255.   MOVE.L #CANTALLOCMEM,D0
  256.  BRA QUIT
  257.  
  258. CHECKDIM
  259.   MOVE.L _THISSCREEN,A0
  260.   MOVE.W SCRN.WIDTH(A0),D0
  261.   MOVE.W WIDTH,D1
  262.   MOVE.W LEFT,D2
  263.   ADD.W D1,D2
  264.   CMP.W D0,D2
  265.   BLE.S 1$
  266.   MOVE.W #0,LEFT
  267.   CMP.W D0,D1
  268.   BLE.S 1$
  269.   MOVE.W #80,WIDTH
  270. 1$:
  271.   MOVE.W SCRN.HEIGHT(A0),D0
  272.   MOVE.W HEIGHT,D1
  273.   MOVE.W TOP,D2
  274.   ADD.W D1,D2
  275.   CMP.W D0,D2
  276.   BLE.S 2$
  277.   MOVE.W #0,TOP
  278.   CMP.W D0,D1
  279.   BLE.S 2$
  280.   MOVE.W #20,HEIGHT
  281. 2$:
  282.  RTS
  283.   
  284. DOGADGET
  285.  MOVE.L D5,A0
  286.  LEA GADGETS,A1
  287.  BSR GETGADG
  288.  CMP.W #0,D0
  289.  BEQ ENDDOGADGET
  290.  CMP.W #1,D0
  291.  BNE.S 2$
  292. ; NEXTSCRN
  293.   MOVE.L WINDOW,A0
  294.   MOVE.W WW.LEFTEDGE(A0),LEFT
  295.   MOVE.W WW.TOPEDGE(A0),TOP
  296.   MOVE.W WW.WIDTH(A0),WIDTH
  297.   MOVE.W WW.HEIGHT(A0),HEIGHT
  298.   MOVE.B #1,D6
  299.   BRA ENDDOGADGET
  300. 2$:
  301.  CMP.W #2,D0
  302.  BNE.S 3$
  303. ; CANCEL
  304.   MOVE.L VP,A0
  305.   LEA COLORPALETTE,A1
  306.   MOVE.W NUMBEROFCOLORS,D0
  307.   GFXLIB LOADRGB4
  308.   BSR PROPADJUST
  309.   BSR REFRESHING
  310.   ZERO D6
  311.   BRA ENDDOGADGET
  312. 3$:
  313.  CMP.W #5,D0
  314.  BGT.S 4$
  315. ; RED/GREEN/BLUE
  316.   LEA PGADGETS,A5
  317.   MOVE.L #2,D5
  318. 20$:
  319.   ZERO D4
  320.   MOVE.L (A5)+,A0
  321.   MOVE.L GADG.SPECIALINFO(A0),A0
  322.   MOVE.W PI.HORIZPOT(A0),D4
  323.   DIVS #$1111,D4
  324.   PUSHREG D4
  325.   MULS #$1111,D4
  326.   MOVE.W D4,PI.HORIZPOT(A0)
  327.   DBRA D5,20$
  328.   PULLREG D3
  329.   PULLREG D2
  330.   PULLREG D1
  331.   MOVE.L VP,A0
  332.   MOVE.W ACTIVECOLOR,D0
  333.   GFXLIB SETRGB4
  334.   BSR REFRESHING
  335.   ZERO D6
  336.   BRA ENDDOGADGET
  337. 4$:
  338.   ;COLOR GADGETS
  339.   SUB.W #6,D0
  340.   MOVE.W D0,ACTIVECOLOR
  341.   BSR PROPADJUST
  342.   BSR REFRESHING
  343.   ZERO D6
  344. ENDDOGADGET
  345.  RTS
  346.  
  347. GETGADG      ; A0-GADGET / A1-GADGET PTR LIST
  348.  ZERO D0   ; D0-PTR # (0=NOT FOUND) / D1-GADGET
  349.  MOVE.W #1,D0
  350. GGLOOP
  351.  MOVE.L (A1)+,D1
  352.  CMP.L #0,D1
  353.  BEQ.S GGNOGO
  354.  CMP.L D1,A0
  355.  BEQ.S GGGOT
  356.  ADDI.W #1,D0
  357.  BRA.S GGLOOP
  358. GGGOT
  359.  RTS
  360. GGNOGO
  361.  MOVE.W 0,D0
  362.  RTS
  363.  
  364. MMOVE
  365. ; RED/GREEN/BLUE MOVES
  366.   LEA PGADGETS,A5
  367.   MOVE.L #2,D5
  368. 20$:
  369.   ZERO D4
  370.   MOVE.L (A5)+,A0
  371.   MOVE.L GADG.SPECIALINFO(A0),A0
  372.   MOVE.W PI.HORIZPOT(A0),D4
  373.   DIVS #$1111,D4
  374.   PUSHREG D4
  375.   DBRA D5,20$
  376.   PULLREG D3
  377.   PULLREG D2
  378.   PULLREG D1
  379.   MOVE.L VP,A0
  380.   MOVE.W ACTIVECOLOR,D0
  381.   GFXLIB SETRGB4
  382.  
  383. COLORIZEGADG            ;A0-GADGET / D0-COLOR
  384.   MOVE.L GADG.RENDER(A0),A0
  385.   MOVE.B D0,IMAG.PLANEONOFF(A0)
  386.  RTS
  387.  
  388. SIZEGADGET              ;A0-GADGET / D4/D5/D6/D7-SIZE DATA
  389.   MOVE.W D4,GADG.LEFTEDGE(A0)
  390.   MOVE.W D5,GADG.TOPEDGE(A0)
  391.   MOVE.W D6,GADG.WIDTH(A0)
  392.   MOVE.W D7,GADG.HEIGHT(A0)
  393.   MOVE.L GADG.RENDER(A0),A0
  394.   MOVE.W D6,IMAG.WIDTH(A0)
  395.   MOVE.W D7,IMAG.HEIGHT(A0)
  396.  RTS
  397.  
  398. REFRESHING
  399.   MOVE.L GADGETS,A0
  400.   MOVE.L WINDOW,A1
  401.   ZERA A2
  402.   INTLIB REFRESHGADGETS
  403.  RTS
  404.  
  405. REFRESHINTS
  406. ; DISPLAY RGB
  407.   PRINTOLDAT WINDOW,REDIT,3,39
  408.   PRINTOLDAT WINDOW,GREENIT,3,49
  409.   PRINTOLDAT WINDOW,BLUEIT,3,59
  410. ; BOX IN COLOR PALETTE
  411.   MOVE.L RP,A0
  412.   LEA GADGETBORDER,A1
  413.   ZERO D0
  414.   ZERO D1
  415.   INTLIB DRAWBORDER
  416.  RTS
  417.  
  418. PROPADJUST
  419.   MOVE.W ACTIVECOLOR,D0
  420.   MOVE.L CM,A0
  421.   GFXLIB GETRGB4
  422.   LEA PGADGETS,A5
  423.   MOVE.L #8,D4
  424.   MOVE.L #2,D5
  425. PROP1
  426.   MOVE.L (A5)+,A0
  427.   MOVE.L GADG.SPECIALINFO(A0),A0
  428.   MOVE.W D0,D1
  429.   LSR.W D4,D1
  430.   AND.W #$000F,D1
  431.   MULS #$1111,D1
  432.   MOVE.W D1,PI.HORIZPOT(A0)
  433.   SUBI.W #4,D4
  434.   DBRA D5,PROP1
  435.  RTS
  436.  
  437. ; *** DATA
  438. MYWINDOWTITLE
  439.   DC.B 'CPalette v1.1',0
  440.   EVENPC
  441. USAGETEXT
  442.   DC.B 'USAGE: [RUN] CPalette',10,0
  443.   EVENPC
  444. OPENMESSAGE
  445.   DC.B 'CPallete V1.1 from LeverEdge',10,0
  446.   EVENPC
  447.  
  448. RED
  449.   DC.B 'R',0
  450.   EVENPC
  451. REDIT DC.L 0
  452. GREEN
  453.   DC.B 'G',0
  454.   EVENPC
  455. GREENIT DC.L 0
  456. BLUE
  457.   DC.B 'B',0
  458.   EVENPC
  459. BLUEIT DC.L 0
  460. NEXTG
  461.   DC.B 'Next SCRN',0
  462.   EVENPC
  463. CANCELG
  464.   DC.B 'Cancel',0
  465.   EVENPC
  466.  
  467. WINDOW DC.L 0
  468. SCRN DC.L 0
  469. RP DC.L 0
  470. VP DC.L 0
  471. CM DC.L 0
  472.  
  473. GADGETS DCB.L 2,0
  474. PGADGETS DCB.L 3,0
  475. CGADGETS DCB.L 32,0
  476.          DC.L 0
  477.  
  478. LEFT DC.W 20
  479. TOP DC.W 0
  480. HEIGHT DC.W 90
  481. WIDTH DC.W 300
  482.  
  483. ACTIVECOLOR DC.W 0
  484. NUMBEROFCOLORS DC.W 4
  485. COLORPALETTE DCB.W 32,0
  486.  
  487. GADGETBORDER
  488.   DC.W 0,0,
  489.   DC.B 1,0,JAM1,5
  490.   DC.L 0,0
  491.   
  492. LINES
  493.   DC.W 5,11,5,32,294,32,294,11,5,11
  494.  
  495. _MYIDCMPFLAGS DC.L CLOSEWINDOW!GADGETUP!MOUSEMOVE!NEWSIZE
  496. _MYFLAGS DC.L WINDOWSIZING!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!SMART_REFRESH
  497.  
  498. _MYGADGACTIV1      ;OPTIONS
  499.   DC.W RELVERIFY!GADGIMMEDIATE
  500. _MYGADGFLAGS1
  501.   DC.W GADGHCOMP
  502. _MYGADGACTIV2      ;COLOR SLIDERS
  503.   DC.W RELVERIFY!GADGIMMEDIATE!FOLLOWMOUSE
  504. _MYGADGFLAGS2
  505.   DC.W GADGIMAGE!GADGHCOMP!GRELWIDTH
  506. _MYGADGACTIV3      ;COLOR PALETTE
  507.   DC.W RELVERIFY!GADGIMMEDIATE
  508. _MYGADGFLAGS3
  509.   DC.W GADGHCOMP!GADGIMAGE
  510.  
  511. _THISFONTHITE DC.W 9
  512.  
  513.  END
  514.